#include <iostream>
#include <string>

using std::cout;
using std::endl;
using std::string;

/* template <typename T1, typename T2, typename T3> */
/* void print(T1 t1, T2 t2, T3 t3) */
/* { */
/* } */

//可以将模板参数中的所有参数打包成一个参数Args
//可以将函数参数中的所有参数打包成一个参数args
template <typename ...Args>//模板参数包
void print(Args ...args)//函数参数包
{
    cout << "sizeof...(Args) = " << sizeof...(Args) << endl;
    cout << "sizeof...(args) = " << sizeof...(args) << endl;

    /* cout << args... << endl;//error */
    /* cout << ...args << endl;//error */
}

/* void print(); */
/* void print(int); */
/* void print(int,double, bool, string); */


void test()
{
    print();

    print(1);

    print(1, 1.1, true, "hello");
}

int main(int argc, char *argv[])
{
    test();
    return 0;
}

